package com.nlgc365.designpattern.Chapter04_Pattern.Creation.P01_Singleton.Usage.Template;

/**
 * 单例模式 - 饿汉式
 * 使用
 * 1, 私有化构造函数(目的: 不允许外部创建对象);
 * 2, 提供一个静态方法, 用于获取单例实例.
 */
public class Singleton01_Hungry {
    private static Singleton01_Hungry instance;

    /**
     * 关键1: 私有化构造函数
     */
    private Singleton01_Hungry() {
    }

    /**
     * 关键2: 类加载时创建一个实例, JVM保证类只被加载一次, 所以该实例也会有且仅有一个.
     */
    static {
        instance = new Singleton01_Hungry();
    }

    /**
     * 关键3: 对外提供一个获取单例实例的方法
     *
     * @return 单例实例
     */
    public static Singleton01_Hungry getInstance() {
        return instance;
    }
}
